package mock

import "fmt"

/**
	这里是一个实现类，结构名称最好和那个接口名称一样
	然后在实现那个接口里面的 Get 方法

	Go语言规定，只要实现了接口里面的方法，就是该接口的实现类

	。。。。。
	type Retriever struct {}
	type Retriever string
	等等，都可以算是这个 Retriever 接口的实现类
	。。。。。

 */

type Retriever struct {
	// 结构体里面的属性
	Contents string
}

// 这里实现的是 Poster 接口
// Go语言规定，只要实现了我接口中的方法，那么就是我这个接口的实现类
func (r Retriever) Post(url string, form map[string]string) string {
	r.Contents = form["contents"]
	return "ok"
}

// 实现接口 Retriever 里面的方法 Get
func (r Retriever) Get(url string) string {
	// 实现的方法体
	return r.Contents
}

// Stringer 是fmt包下面的
// 所以实现了 Stringer 这个接口 里面的方法的 String()方法
// 所以也可以当做，Stringer 的实现类
func (r Retriever) String() string {
	return fmt.Sprintf("Retriever: {contents=%s}", r.Contents)
}

